package com.xpq.petserver.config;

import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.File;

@Setter
@Component
@ConfigurationProperties(prefix = "pet-server.file-path")
public class FilePathProperties {
    // 服务器的地址和端口号
    private String serverUrl = "http://localhost:8080";
    // 文件存储的物理位置，在IDEA中运行该项目默认路径为项目根路径，打成jar包之后运行默认路径为jar包所在路径
    private String filePhysicalPath;
    {
        String separator = File.separator;
        String basePath = new File("").getAbsolutePath() + separator + "file" + separator;
        this.filePhysicalPath = basePath;
    }

    /**
     * 文件存储物理位置，在IDEA中运行该项目默认路径为项目根路径，打成jar包之后运行默认路径为jar包所在路径
     * @return
     */
    public String getFilePhysicalPath() {
        return this.filePhysicalPath;
    }

    /**
     * 获取springMVC文件访问的路径匹配规则
     * 例如下面的配置表示访问 this.serverURL + /file/** 时将映射到 this.filePhysicalPath 物理路径下的文件
     * @return
     */
    public String getPathPattern() {
        return  "/file/**";
    }

    /**
     * 图片访问的逻辑路径
     * @return
     */
    public String getPictureLogicalPath() {
        return this.serverUrl + "/file/picture/";
    }

    /**
     * 头像访问的逻辑路径
     * @return
     */
    public String getAvatarLogicalPath() {
        return this.serverUrl + "/file/avatar/";
    }

    /**
     * 图片存储的物理路径
     * @return
     */
    public String getPicturePhysicalPath(){
        String separator = File.separator;
        return this.filePhysicalPath + "picture" + separator;
    }

    /**
     * 头像存储的物理路径
     * @return
     */
    public String getAvatarPhysicalPath(){
        String separator = File.separator;
        return this.filePhysicalPath + "avatar" + separator;
    }

}
